接口
微服务调用者接口
异步消息事务开始接口,用于业务操作前 /msg/begin
Method POST
请求:
tags M list 消息标签列表
key O str 消息关键词字段,服务保证消息关键词相同的情况下的消息顺序,例如订单消息,关键词可以是订单号`PL12312`,不需要保证事务性时可不传
body M json 消息内容,不需要差量数据可不传
body_hash M 消息内容的hash值(用于校验body是否正确)
topic M str 主题
serial O str 事务号,用于校验消息实际业务执行情况,每次发消息都要传入一个新生成的随机字符串,不需要保证事务性时可不传
响应:
code M int
msg M string
data M null
{
id M int 如果成功的话,返回一个消息 id 用于 commit 接口
}
注:
- tags 提供一个默认层级关系表,此处只需要填最低层级的标签即可,以订单为例:
1级(动作) | 2级(元数据) | 3级(附属数据/动作) |
---|---|---|
create_order | ||
edit_order | edit_remark | |
edit_skus | add_skus | |
delete_skus | ||
edit_sku_quantity | ||
weigh | ||
edit_sku_remark | ||
edit_status | ||
edit_receive_time | ||
set_sort_num | ||
delete_order |
输入 tag 为 add_skus 时,tags 会补全成 [edit_order, edit_skus, add_skus]
异步消息事务提交接口,用于业务操作后 /msg/commit
Method POST
请求:
ids M list 消息ID列表
响应:
code M int
msg M string
data M null
异步消息事务提交接口,用于业务操作后 /worker/resize
Method POST
请求:
subscription_name M string 订阅名
size M int worker数量
响应:
code M int
msg M string
data M null
rmiclient 接口
异步事务开始 mq_srv.begin
mq_srv.begin(
topic: str 主题(必传)
tags: list 标签(必传)
key: str = None 关键字(可选,需要事务保证的消息传)
body: dict 内容(必传)
serial: str = None 事务号(可选,需要事务保证的消息传)
) -> int 返回消息ID
异步事务提交 mq_srv.commit
mq_srv.commit(
ids: list 消息ID列表(支持批量发送)
) -> None
例子
- 需要事务保证的消息
发送订单消息
id = mq_srv.begin(
topic='order'
tags=['change_sku_amount'],
key='PL1231013',
body={blabla},
serial='13afa14asd235',
)
修改订单的具体操作
order_srv.edit(...)
mq_srv.commit([id])
- 不需要事务保证的消息
发送订单消息
id = mq_srv.begin(
topic='order',
tags=['change_sku_amount'],
body={blabla},
)
修改订单的具体操作
order_srv.edit(...)
mq_srv.commit([id])
回调检查接口规范
url 命名没有要求
Method GET
请求:
key M str 消息关键词字段
serial M str 事务号
响应:
code M int
msg M string
data M null
{
result M bool 成功返回true,失败返回false
}
逻辑:
假如消息的源资源是存放在 mongo 内的,到对应的 mongo 表内查 msg_key 对应 _id 的文档内,serials 这个列表字段里有没有 serial,如果有,就返回true,,没有就 false
假如消息的源资源是存放在 mysql 内的,到对应设计的 mysql 表内查有没有 serial,如果有,就返回true,,没有就 false
逻辑上,业务在使用mq_srv.begin
时要对自身要操作的资源上锁,如果mq_srv.begin
失败了,那么业务也将失败,如果mq_srv.begin
成功了,那么业务可以继续操作并解锁。
推送接口规范
url没有要求
Method POST
头:
request_id web 服务的 request_id
cookies:
group_id 用于灰度
请求:
消息其他字段
响应:
code M int
msg M string
data M null
返回状态码200及 code 为 0 认为 消费成功,否则均认为失败